import { useTimer } from './useTimer';

/**
 * 防抖 hook
 * @param fn 需要防抖的函数
 * @param delay 延迟时间，默认 300ms
 */
export function useDebounce<T extends (...args: any[]) => any>(fn: T, delay = 300) {
  const { set, clear } = useTimer();

  // 创建防抖函数
  const debounced = (...args: Parameters<T>) => {
    set(() => fn(...args), delay);
  };

  return {
    debounced,
    clear,
  };
}

/**
 * 使用示例：
 * const { debounced } = useDebounce((value) => {
 *   console.log('搜索:', value);
 * }, 500);
 * 
 * // 在模板中使用
 * <input @input="(e) => debounced(e.target.value)" />
 */